﻿/*************************************************************************************
 * 工    具：  HK_Toggle
 * 
 * 描    述：  重写的UGUI Toggle组件，通过在Inspector面板中修改AudioType播放对应的Button音效
 * 
 * 版    本：  V1.0
 * 作    者：  周阿媛、京产肠饭
 * 
 * 创    建：  2022/01/06  V1.0
 * 
 * 链    接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
*************************************************************************************/

using System;
using UnityEngine.EventSystems;

namespace UnityEngine.UI
{
    [AddComponentMenu("UI/HK_Toggle", 31)]
    public class HK_Toggle : Toggle
    {
        public enum AudioType
        {
            Default,
            Type1,
            Type2,
            Type3,
            Type4
        }

        //序列化变量
        [SerializeField]
        AudioType audioType = AudioType.Default;

        #region 事件类型
        public static event Action defaultAudio_Event;
        public static event Action type1Audio_Event;
        public static event Action type2Audio_Event;
        public static event Action type3Audio_Event;
        public static event Action type4Audio_Event;
        #endregion

        public override void OnPointerClick(PointerEventData eventData)
        {
            base.OnPointerClick(eventData);
            AudioPress(audioType);

        }
        public override void OnSubmit(BaseEventData eventData)
        {
            base.OnSubmit(eventData);
            AudioPress(audioType);
        }

        void AudioPress(AudioType audioType)
        {
            UISystemProfilerApi.AddMarker("Button.onClick", this);

            switch (audioType)
            {
                case AudioType.Default:
                    if (defaultAudio_Event != null)
                        defaultAudio_Event();
                    break;
                case AudioType.Type1:
                    if (type1Audio_Event != null)
                        type1Audio_Event();
                    break;
                case AudioType.Type2:
                    if (type2Audio_Event != null)
                        type2Audio_Event();
                    break;
                case AudioType.Type3:
                    if (type3Audio_Event != null)
                        type3Audio_Event();
                    break;
                case AudioType.Type4:
                    if (type4Audio_Event != null)
                        type4Audio_Event();
                    break;
            }
        }
    }
}

